/*********************************************************************
	filename:	DaterGroupMessageCreator.h
	created:	22/5/2012
	author:		4Ys
	
	purpose:	Defines class for Group Message Creator
*********************************************************************/
#ifndef _DaterGroupMessageCreator_h_
#define _DaterGroupMessageCreator_h_

#include "DaterMessageCreator.h"
#include "DaterGroup.h"
#include "DaterEvent.h"

namespace Dater
{
	/*!
	\brief
		An entity class contains 21 year calendars front and back.
	*/
	class GroupMessageCreator : public MessageCreator
	{
	public:
		/*!
		\brief
			Constructor for GroupMessageCreator class.
		*/
		GroupMessageCreator() {}
		
		/*!
		\brief
			get some parameters from the class.
		*/
		std::string getGroupCreateMessage(std::string groupName, std::string type, std::string description, Time createTime);
		/*!
		\brief
			get some parameters from the class.
		*/
		std::string getGroupAddMemberMessage(Group* _group/*int groupID*/, int memberID);
		/*!
		\brief
			get some parameters from the class.
		*/
		std::string getGroupAskMemberMessage(Group* _group/*int groupID, int creatorID*/, int accept);
		/*!
		\brief
			get some parameters from the class.
		*/
		std::string getGroupViewMessage(int userID/*int groupID*/);
		/*!
		\brief
			get some parameters from the class.
		*/
		std::string getGroupJoinMessage(int groupID, std::string reason);
		/*!
		\brief
			get some parameters from the class.
		*/
		std::string getGroupAskJoinMessage(int groupID, int applicantID, bool accept);

		/*!
		\brief
			get some parameters from the class.
		*/
		std::string getGroupPublishEventMessage(int publisherID, int groupID, const std::string& groupName,
			const std::string& groupDescription, const Time& startTime, const Time& finishTime, const Time& createTime);
		/*!
		\brief
			get some parameters from the class.
		*/
		std::string getGroupResponseToEventMessage(int groupEventID, int userID, bool isAccept);
		/*!
		\brief
			get some parameters from the class.
		*/
		std::string getGroupDeleteMemberMessage(Group* _group/*int groupID*/, int memberID);
		/*!
		\brief
			get some parameters from the class.
		*/
		std::string getGroupList();
		/*!
		\brief
			get some parameters from the class.
		*/
		std::string getAllGroupList(std::string keyword);
		/*!
		\brief
			get some parameters from the class.
		*/
		std::string getGroupSearchMessage(std::string name);
	};
}
#endif